// 导入 mobx 状态管理库
import { observable, action } from 'mobx-miniprogram'
// 导入 mobx 小程序绑定库
import { storeBindingsBehavior as storeBehavior } from 'mobx-miniprogram-bindings'
// 把字符串存储给变量，方便书写代码提示
const USER_INFO = 'USER_INFO'

/**
 * store 实例
 */
const store = observable({
  // 用户信息
  user: wx.getStorageSync(USER_INFO) || {},

  // 计算是否已登录
  get isLogin() {
    return Boolean(this.user.token)
  },

  // 保存用户信息
  setUser: action(function (value) {
    // 保存到 store 中
    this.user = value
    // 保存到本地缓存中
    wx.setStorageSync(USER_INFO, value)
  }),
  // 清理用户信息
  clearUser: action(function () {
    // 重置用户信息
    this.user = {}
    // 清理本地缓存
    wx.removeStorageSync(USER_INFO)
  }),
})

export { USER_INFO, store, storeBehavior }
